Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

762
Vistas
¿De qué podría tratarse esto? [Error de TsLint: "Las promesas deben manejarse adecuadamente"]

Estoy haciendo algunas operaciones asincrónicas básicas usando async/await await en TypeScript, pero TSLint arroja mensajes de error misteriosos para estas dos funciones a continuación. ¿Alguien ha encontrado estos errores antes? En la salida de error, no se menciona la regla de gobierno, por lo que no entiendo qué los está causando. Cualquier idea sería muy apreciada.

La petición principal:

 import * as rp from 'request-promise' export function getRequest(address: rp.Options): rp.RequestPromise { return rp(address) }

Función asíncrona exportada:

 export async function getStatus(message: Message) { try { const res = await getRequest(address) if (res.ready) { message.reply('...') } else { message.reply('...') } } catch (err) { message.reply(err) } }

Esto obtiene: Las Promises must be handled appropriately y await of non-Promise sean Promesas para la línea n.º 3.

La función simple que usa esta exportación es:

 client.on('message', message => { if (message.content === 'green') { getStatus(message) } })

Esto también recibe Promises must be handled appropriately .

Información adicional:

Aunque el mensaje de error no lo menciona, esta parece ser la regla que rige para Promises must be handled appropriately : https://palantir.github.io/tslint/rules/no-floating-promises/

Y este problema menciona await of non-Promise : https://github.com/palantir/tslint/issues/2661

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Ese es un mensaje de error de mierda. Uno mejor podría ser,

cada expresión de tipo Promise debe terminar con una llamada a .catch o una llamada a .then con un controlador de rechazo ( fuente ).

Entonces, por ejemplo, si lo hace

 PromiseFunction() .catch(err => handle(err)) .then(() => console.log('this will succeed'))

entonces todavía tendrá un problema con tslint, porque el tipo de .then(...) es una promesa, y tiene que terminar con una trampa. La solución sería agregar una cláusula .catch , por ejemplo,

 PromiseFunction() .catch(err => handle(err)) .then(() => console.log('this will succeed')) .catch(() => 'obligatory catch')

o simplemente deshabilitando tslint para esa línea a través de:

 PromiseFunction() .catch(err => handle(err)) // tslint:disable-next-line:no-unsafe-any .then(() => console.log('this will succeed'))

Como alternativa, puede invertir el orden de las instrucciones .catch .then Sin embargo, eso impide que .then ejecute si se produce un error, lo que probablemente desee si se encuentra con este problema.

over 4 years ago · Santiago Trujillo Denunciar

0

A veces, es posible que desee llamar a la promesa, pero no necesita hacer nada con la respuesta. Un cambio de ruta o algo más.

entonces en lugar de:

 promiseFunction().then().catch() try/catch async/await

tu puedes hacer:

 void promiseFunction();

Según los comentarios sobre el uso correcto de void , lea: IgnoreVoid

Úsalo a tu conveniencia :)

over 4 years ago · Santiago Trujillo Denunciar

0

Obtuve la misma excepción cuando firebase-function firebase usando firebase-tool

 const ref = admin.database().ref("path/to/database/object"); ref.once("value").catch(error =>{ // line 22 response.send( error() ); }).then( snapshot =>{ response.send( snapshot.val ); })

Este código no se compila y return

 ERROR: /src/index.ts[22, 5]: Promises must be handled appropriately

He cambiado los lugares de catch y then .

 ref.once(...).then(...).catch(...)

Este código funciona, lo siento pero no tengo ninguna explicación.

Tan sorprendente cuando la aplicación devuelve algún error sin bloquear el bloqueo, incluso de acuerdo firebase doc que no menciona catch catch

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda